//#include<iostream>
//using namespace std;
//template<class T>
//class stack
//{
//public:
//	stack(size_t capacity = 4)
//	{
//		_array = new T[capacity];
//		_capacity = capacity;
//		_size = size;
//	}
//	~stack()
//	{
//		delete[] _array;
//		_array = nullptr;
//		_capacity = _size = 0;
//	}
//
//	//void push(const T& x);
//	void push(const X& y)
//	{
//		if (_capacity == _size)
//		{
//			X* tmp = new X[_capacity * 2];
//			memcpy(tmp, _array, sizeof(X) * size);
//			delete[] _array;
//			_array = tmp;
//			_capacity *= 2;
//		}
//		_array[_size++] = y;
//	}
//private:
//	T* _array;
//	size_t _size;
//	size_t  _capacity;
//};
//
////template<class X>
//
//int main()
//{
//	stack<int>st1;
//	st1.push(1);
//	st1.push(1);
//	st1.push(1);
//	stack<double>st2;
//	st2.push(1.1);
//	st2.push(1);
//	return 0;
//}


#include<iostream>
#include<string>
using namespace std;
//class string
//{
//public:char& operator[] (size_t i)
//{
//	return _str[i];
//}
//private:
//	char* _str;
//	size_t _size;
//	size_t _capacity;
//};
int main()
{
	//string s1;
	//string s2("hello world");
	//string s3(s2);

	//cout << s1 << endl;
	//cout << s2 << endl;
	//cout << s3 << endl;

	//cin >> s1;
	//cout << s1 << endl;

	//string s4(s2, 4,_Meta_npos);
	//cout << s4 << endl;

	//string s5("hello world",5);
	//cout << s5 << endl;

	//string s6(5, 'x');
	//cout << s6 << endl;

	string s5("hello world", 5);
	cout << s5 << endl;

	s5[10];
	s5[2] = '2';
	cout << s5 << endl;

	return 0;
}